using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace RC.ControlAcceso.BaseDatos
{
    public class CACargoBD : TablaBase
    {
        #region Variables
        private int _idCargo;
        private int _idSector;
        private string _descripcion;
        private bool _estaActivo;

        //private int mIdLegajoCodigoFalta;
        //private CALegajoBD mLegajo;
        //private CACodigoFaltaBD mCodigoFalta;
        //private DateTime mFechaDesde;
        //private DateTime mFechaHasta;
        //private string mObservaciones;
        //private string mEstado;

        protected string SPObtenerTodos = "";
        //protected string SPValidarFechas = "";
        //protected string SPRecuperarporFalta = "";
        #endregion

        #region Popiedades
        public int IdCargo
        {
            get
            {
                return _idCargo;
            }
            set
            {
                _idCargo = value;
            }
        }
        public int IdSector
        {
            get
            {
                return _idSector;
            }
            set
            {
                _idSector = value;
            }
        }
        public string Descripcion
        {
            get
            {
                return _descripcion;
            }
            set
            {
                _descripcion = value;
            }
        }
        public bool EstaActivo
        {
            get
            {
                return _estaActivo;
            }
            set
            {
                _estaActivo = value;
            }
        }
        #endregion

        #region Constructures
        public CACargoBD()
        {
            _idCargo = -1;
            _idSector = -1;
            _descripcion = "";
            _estaActivo = true;
        }
        public CACargoBD(int pIdCargo)
        {
            _idCargo = pIdCargo;
            Editar();
        }
        #endregion

        #region Funciones
        protected override void AsignarSP()
        {
            SPInsertar = "CACargoInsertar";
            SPEditar = "CACargoEditar";
            SPObtenerTodos = "CACargoObtenerTodos";
            SPActualizar = "CACargoActualizar";
            SPEliminar = "CACargoEliminar";
        }
        protected override System.Data.SqlClient.SqlParameter[] AsignaParametros(string pNombreSP)
        {
            try
            {
                SqlParameter[] Param;
                SqlParameter Parametro;
                switch (pNombreSP)
                {
                    case "CACargoActualizar":
                        Param = new SqlParameter[4];

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@IdCargo";
                        Parametro.SqlDbType = SqlDbType.Int;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = IdCargo;
                        Param[0] = Parametro;

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@IdSector";
                        Parametro.SqlDbType = SqlDbType.Int;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = IdSector;
                        Param[1] = Parametro;

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@Descripcion";
                        Parametro.SqlDbType = SqlDbType.VarChar;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = Descripcion;
                        Param[2] = Parametro;

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@EstaActivo";
                        Parametro.SqlDbType = SqlDbType.Bit;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = EstaActivo;
                        Param[3] = Parametro;

                        return Param;

                    case "CACargoInsertar":
                        Param = new SqlParameter[3];

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@IdSector";
                        Parametro.SqlDbType = SqlDbType.Int;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = IdSector;
                        Param[0] = Parametro;

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@Descripcion";
                        Parametro.SqlDbType = SqlDbType.VarChar;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = Descripcion;
                        Param[1] = Parametro;

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@EstaActivo";
                        Parametro.SqlDbType = SqlDbType.Bit;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = EstaActivo;
                        Param[2] = Parametro;

                        return Param;

                    case "CACargoEditar":
                        Param = new SqlParameter[1];

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@IdCargo";
                        Parametro.SqlDbType = SqlDbType.Int;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = IdCargo;
                        Param[0] = Parametro;

                        return Param;

                    case "CACargoEliminar":
                        Param = new SqlParameter[1];

                        Parametro = new SqlParameter();
                        Parametro.ParameterName = "@IdCargo";
                        Parametro.SqlDbType = SqlDbType.Int;
                        Parametro.Direction = ParameterDirection.Input;
                        Parametro.Value = IdCargo;
                        Param[0] = Parametro;
                        return Param;

                    default: return null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        protected override void AsignarDatos(System.Data.SqlClient.SqlDataReader pDatos)
        {
            try
            {
                IdCargo = pDatos.GetInt32(pDatos.GetOrdinal("IdCargo"));
                IdSector = pDatos.GetInt32(pDatos.GetOrdinal("IdSector"));
                Descripcion = pDatos.GetString(pDatos.GetOrdinal("Descripcion"));
                EstaActivo = pDatos.GetBoolean(pDatos.GetOrdinal("EstaActivo"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public DataSet ObtenerTodos()
        {
            try
            {
                Conectar();
                AsignarSP();
                Parametros = AsignaParametros(SPObtenerTodos);
                DataSet ds = SqlHelper.ExecuteDataset(miConn, CommandType.StoredProcedure, SPObtenerTodos, Parametros);
                return ds;
            }
            catch (Exception ex)
            {
                if (miTrans != null)
                    miTrans.Rollback();
                throw new Exception("Error al recuperar de la base de datos. " + ex.Message);
            }
            finally
            {
                if (miConn != null && miConn.State == ConnectionState.Open)
                    miConn.Close();
                miConn.Dispose();
            }
        }

        #endregion
    }
}
